Single-receiver rover position difference estimates are normally generated at say 5, 10 or 20 Hz. Typically the rover position difference estimates form a smooth trajectory Small jumps sometimes occur with changes in satellites geometry, i.e. new satellites entering the solution, or satellites being lost. As implied by the name, rover position difference estimates only provide relative changes in user location over time. The absolute position of the user is required at an epoch to be able to anchor the rover position differences. Synchronous position estimates derived from a position+ambiguity processor are normally used in conjunction with delta phase processing to produce low-latency position estimates.
Measurement errors lead to variations in the synchronous position estimates, which in turn leads to discontinuities in the reported position trajectory.
FIG. 12 illustrates a 10 Hz rover position difference trajectory 1005, from time 1.0 to 4.0 s. Just the height component is shown. Synchronous position solutions are generated at 1 Hz and are illustrated as solid black circles 1010, 1020, 1030 & 1040. The rover position difference trajectory 1005 is first adjusted to the synchronous position 1010, at 1.0 s. When the next synchronous position is available for 2.0 s, 1020, the rover position difference trajectory is shifted by 1045, to 1060. Trajectory 1060 is again shifted based on the synchronous position 1030, at 3.0 s, to form 1070. This adjustment process is repeated at 4.0 s, and so on.
A step in the rover position difference trajectory occurs for each synchronous position adjustment. Note that the magnitude of the stepping effect has been exaggerated for the purposes of this example.
FIG. 13 illustrates a 4 s rover position difference trajectory (1105). Synchronous positions are obtained at times 1,2,3 & 4 s, denoted 1110, 1120, 1130 & 1140 respectively. Comparisons can be made between the rover position difference estimates at 1 Hz epochs (1115, 1125 & 1135) with the corresponding synchronous position estimates (1120, 1130 & 1140), thus leading to the differences 1145, 1150 and 1155, respectively. Rather than introducing abrupt steps in the reported position trajectory, it is possible to blend the rover position difference trajectory with the synchronous positions.
The blending process involves the following steps:                1. Obtain a synchronous position for a given anchor epoch (time),        2. Obtain an older synchronous position and propagate it using rover position difference(s) to the anchor epoch—thus producing a propagated position for the anchor epoch,        3. A weighting factor is generated for the anchor epoch synchronous position and a weighting factor is generated for the older synchronous position, propagated to the anchor epoch.        4. A blended anchor position is generated from the anchor epoch synchronous position and the older synchronous position propagated to the anchor epoch.        5. Optionally, multiple synchronous positions, propagated to the anchor epoch can be used in the blending process. The number of synchronous positions considered in the blending process is a design parameter.        
Blending Factor Adjustment
A buffer of the last n synchronous position fixes is maintained, as well as a buffer of the last n corresponding rover position difference estimates. Table 8 provides an example of the position buffering and blending process for the example given in FIG. 13. The synchronous positions are shown in column 2 as: U(1.0), U(2.0), U(3.0) & U(4.0). Delta phase processing yields rover position differences: U(1.0,2.0), U(2.0,3.0), U(3.0,4.0) as shown in column 3 Multiple estimates of the position at the anchor epochs can be obtained using the previous synchronous solutions and the buffered delta positions as shown in column 4. Blending factors η(a,b) are used to weight the synchronous solution and propagated synchronous positions at the anchor epoch.
The selection of the weighting factors [η(a,b)] determines the characteristics of the blended solution. Normally the most recent synchronous position is given the most weight, while the oldest position the least weight. A linear, exponential or other suitable, weighting scheme can be used.
The example in Table 8 shows that the last 4 seconds of propagated synchronous solutions are used in the blended anchor position. The number of solutions considered in the blending process is limited in order to minimize the computation load and buffer storage requirements. Furthermore, in practice, only 2-10 s are needed to effectively blend the solutions.
Linear Blending
The following formula can be used to compute linear blending factors:
                                          n            linear                    ⁡                      (                          a              ,              b                        )                          =                  {                                                                                          χ                    -                                          [                                              b                        -                        a                                            ]                                                        χ                                                                                                  for                    ⁢                                                                                  [                                          b                      -                      a                                        ]                                    ≤                  χ                                                                                    0                                            else                                                                        (        33        )            where:
a time of first synchronous epoch considered in blending;
b time of latest synchronous epoch considered in blending;
χ maximum time span to consider in blending;
ηlinear (a,b)) Linear blending factor for time span a to b.
Table 9 presents an example of linear blending factors where the maximum blending time-span χ=4 seconds.
TABLE 8Blending factor adjustment for Low-latency solution generation forepoch 3.0 s, based on synchronous solution at 2.0 s and 5 Hz rover position differences.SynchronousSynchronousRover PositionPropagatedBlendedEpochPositionDifferenceSynchronous PositionsAnchor Position1.0U(1.0)—U(1.0)U(1.0) *η(1, 1)2.0U(2.0)δU(1.0, 2.0)U(1.0) +[U(1.0) +δU(1.0, 2.0)δU(1.0, 2.0)] *η(1, 2) +U(2.0) *η(2, 2)3.0U(3.0)δU(2.0, 3.0)U(1.0) +[U(1.0) +δU(1.0, 2.0) +δU(1.0, 2.0) +δU(2.0, 3.0);δU(2.0, 3.0)] * η(1, 3) +U(2.0) +[U(2.0) +δU(2.0, 3.0)δU(2.0, 3.0)] * η(2, 3) +U(3.0) *η(3, 3)4.0U(4.0)δU(3.0, 4.0)U(1.0) +[U(1.0) +δU(1.0, 2.0) +δU(1.0, 2.0) +δU(2.0, 3.0) +δU(2.0, 3.0) +δU(3.0, 4.0);δU(3.0, 4.0)] * η(1, 4) +U(2.0) +[U(2.0) +δU(2.0, 3.0) +δU(2.0, 3.0) +δU(3.0, 4.0);δU(3.0, 4.0)] * η(2, 4) +U(3.0) +[U(3.0) +δU(3.0, 4.0);δU(3.0, 4.0)] * η(3, 4) +U(4.0) *η(4, 4)5.0U(5.0)δU(4.0, 5.0)U(1.0) +[U(1.0) +δU(1.0, 2.0) +δU(1.0, 2.0) +δU(2.0, 3.0) +δU(2.0, 3.0) +δU(3.0, 4.0) +δU(3.0, 4.0) +δU(4.0, 5.0);δU(4.0, 5.0)] * η(1, 5) +U(2.0) +[U(2.0) +δU(2.0, 3.0) +δU(2.0, 3.0) +δU(3.0, 4.0) +δU(3.0, 4.0) +δU(4.0, 5.0);δU(4.0, 5.0)] * η(2, 5) +U(3.0) +[U(3.0) +δU(3.0, 4.0) +δU(3.0, 4.0) +δU(4.0, 5.0);δU(4.0, 5.0)] * η(3, 5) +U(4.0) +[U(4.0) +δU(4.0, 5.0);δU(4.0, 5.0)] * η(4, 5) +U(5.0) *η(5, 5)
TABLE 9Linear blending factors for example in Table 6,based on a maximum blending time-span χ = 4 s.        Epoch      Factor Indices (a, b)      Raw Blending Factors η(a, b)Normalized Blending Factors         η    ⁢                  ⁢          (              a        ,        b            )                  Σ      a        ⁢    η    ⁢                  ⁢          (              a        ,        b            )      1.01, 11.01.02.01, 20.750.42862, 21.00.57143.01, 30.50.22222, 30.750.33333, 31.00.44444.01, 40.250.10002, 40.50.20003, 40.750.30004, 41.00.40005.01, 50.00.02, 50.250.10003, 50.50.20004, 50.750.30005, 51.00.4000
Precision-Based Blending
Changes in satellite geometry result in changes to the synchronous position fix quality. Hence, the precision of each synchronous position fix will generally be different. Furthermore, the longer a synchronous position is propagated with rover position differences, the greater the uncertainty in the resultant solution. The relative precisions of each propagated position fix can be used to compute the blending factors. A precision-based blending scheme endeavors to account for the relative differences in precisions of the rover position difference propagated and synchronous solutions.
The raw precision-based blending factors are given by:ηprec(a,b)x=1/σ2(a,b)x ηprec(a,b)y=1/σ2(a,b)y nprec(a,b)z=1/σ2(a,b)z  (34)where:                σ2(a,b)x Variance of the x-coordinate for the position fix spanning time a to b.                    For example if a=b, then this is the variance of the synchronous fix. When a<b, the variance corresponds to synchronous fix at time a, that has been propagated using rover position differences, to time b.                        σ2(a,b)y Variance of the y-coordinate for the position fix spanning time a to b;        σ2(a,b)z Variance of the z-coordinate for the position fix spanning time a to b.        ηprec(a,b)x Precision-based blending factor for the x-coordinate, for the position fix spanning time a to b. With analogous definitions for the y and z coordinates.        
Note that the raw blending factors need to be normalized (so that they sum to 1.0).
An illustration of the precision-based blending scheme is presented in Table 10. Just the x-coordinate is included in the example. However the approach used for the y- and z-coordinate is analogous to that used for the x-coordinate.
TABLE 10Precision-based blending factors for example in Table 6.The x-coordinate blending factors are computed basedon the precisions of the x-coordinate shown in column 3.        Epoch    Factor Indices a, b  Precision of Solution (x-coordinate) σ2(a, b)x  Raw Blending Factors ηprec(a, b)xNormalized Blending Factors               η      prec        ⁢                  ⁢                  (                  a          ,          b                )            x                  Σ      a        ⁢          η      prec        ⁢                  ⁢                  (                  a          ,          b                )            x      1.01, 10.02540.001.02.01, 20.03132.260.43632, 20.02441.670.56363.01, 30.03727.030.27352, 30.03033.330.33733, 30.02638.460.38924.01, 40.04323.260.18762, 40.03627.780.22413, 40.03231.250.25214, 40.02441.670.33615.01, 50.04920.410.13672, 50.04223.810.15953, 50.03826.310.17624, 50.03033.330.22325, 50.02245.450.30446.01, 60.05518.180.10162, 60.04820.830.11643, 60.04223.810.13314, 60.03627.780.15525, 60.02835.710.19966, 60.01952.630.2941
Bridging Reference Station Changes
Background
In a prior invention described in GNSS Position Coasting, US Patent Publication 2010/0214162 A1 {A2555}, single-difference delta phase processing is used to propagate fixed quality synchronous position results forward in time in order to bridge segments of float quality synchronous position results. The GNSS Position Coasting scheme helps to extend the amount of time that fixed quality solutions are available for high precision operation.
The use of rigorous satellite clock and orbit information for improved delta positioning is described in Vollath, Position Determination with reference data outage, U.S. Pat. No. 7,576,690. The satellite clock and orbit errors are significant component of the single-reference delta phase measurements. Once satellite clock/orbit errors are removed, the precision of the single-receiver rover position difference estimates are greatly improved.
Single-receiver delta phase processing with rigorous satellite and clock information, is termed here Precise (single-receiver) Delta Phase. When the rigorous satellite clock information is predicted in time, this is termed Predicted Precise Delta Phase.
The following events can cause interruptions to high-precision position results at the rover:                1. Switch from fixed quality to float quality synchronous position results;        2. Cycle slips occur on reference station satellite data which results in insufficient single-difference satellite tracking to perform a synchronous solution;        3. The physical reference station changes in a network data stream, which normally causes a reset in the synchronous position processor and an interruption to the position report, followed by a period of float-quality positioning.        
New Approach
A new unified approach has been developed which addresses specifically issue 3 above, as well as more generally handing degraded positioning caused by issues 1, 2 & 3. In the new approach, the following methods of solution propagation are used to produce the best position result (where the best result is deemed as the one with the highest precision (smallest uncertainty)):                1. Single-difference delta phase (which yields single-difference rover position difference);        2. Precise (single-receiver) delta phase (which yields precise rover position difference);        3. Predicted precise (single-receiver) delta phase (which yields predicted-precise rover position difference);        4. Single-receiver delta phase (which yields rover position difference (broadcast orbits and clocks).        
FIG. 14 provides an illustration of the relative uncertainties of various solutions types over time assuming all solution types use the same satellite geometry. The axis 1205 corresponds to fixed-quality synchronous solutions, with each position 1230, identified with solid black dots. The uncertainty of the positions is represented by error bars 1235.
The float-quality synchronous positions on axis 1210, have larger uncertainty than the fixed-quality synchronous solutions, as evidenced by the longer error bars 1245. Each float-quality synchronous position, 1240, shows larger variations about the zero axis, 1210.
The error growth of single-difference rover position differences is represented by the region between the dashed lines (1255) on axis 1215. Each single-difference rover position estimate 1250, is shown by a grey circle surrounded by a black ring.
The precise single-receiver rover position difference positions are presented on axis 1220. Each position fix is marked by a black ring (1260). The error growth of the precise rover position difference estimates is shown as the region 1265, assuming that the propagation time starts at first epoch and accumulates thereafter.
The predicted-precise single-receiver rover position differences are presented on axis 1222. Each position fix is marked by a dark grey circle surrounded by a black ring (1262). The error growth of the predicted-precise rover position difference estimates is shown as the region 1267.
The single-receiver rover position differences (broadcast orbits and clocks) is shown on axis 1225, with each position fix marked by a grey ring. The error growth of the single-receiver rover position differences is defined by the region 1275.
Assuming a common satellite geometry, the time-wise error growth of single-difference rover position difference is lower than that of the precise (single-receiver) rover position difference; which is lower than the predicted-precise rover position difference; which is lower than the single-receiver rover position difference (broadcast orbits and clocks). Single-difference processing requires reference and rover receivers to be tracking common satellites. In many circumstances, the number of single-difference satellites may be less than the number of rover (single-) receiver satellites. In which case, the single-difference rover position difference error growth may be worse than that of single-receiver rover position differences.
FIG. 15 presents timeline views of positions (height component only) derived from prior art and new techniques. The upper axis 1305, refers to prior-art positioning methods, while the lower axis, 1310, to new techniques. The position trace for axis 1305 is denoted 1315; for axis 1310, the position trace is denoted 1320.
Considering the prior-art method (axis 1305), during times 1-2, the solution has fixed quality. Between epochs 2 & 3, there is a switch in the physical reference station (or loss of satellite tracking at the reference), this event, denoted 1325, causes the synchronous processor to reset. This results in a period of float quality synchronous positioning up until epoch 6. During the float period, the accuracy of the reported position is only decimeter-level. At epoch 6, the synchronous fixed quality is reestablished (segment 1350) and retained until reference station corrections are lost just after epoch 7. The float quality solutions are propagated using single-receiver delta positions through segment 1355.
In the new approach, precise single-receiver rover position difference processing is used at epoch 3 (denoted 1370) to propagate the fixed quality synchronous solution from epoch 2 to epoch 3. Single-difference rover position difference processing is then used at epochs 4-6, to produce high-quality position estimates until regular synchronous fixed quality solutions are regained at epoch 6. Precise single-receiver rover position difference processing is again used between epochs 7-9, while the reference receiver data is unavailable. Note that the use of precise-single receiver rover position difference processing and single-difference rover position differences enables fixed quality solutions to be provided (segment 1360). The rigorous clock/orbit corrections are lost at event 1335, around epoch 9, after which only single-receiver (broadcast orbits and clocks) rover position difference processing is used to deliver solutions with float quality (segment 1365).
The combination of precise single-receiver rover position difference and single-difference rover position difference processing gives the new method a clear advantage in delivering fixed quality positions, versus prior art techniques.
FIG. 16 presents a flowchart that explains the handling of data at the rover. When new data arrives at 1505, it is tested at 1510 to see if it is rover data. If so, rover data handling occurs at 1525. Predicted Precise orbit and clock information when available (see test 1512) is handled at 1527. Test 1515 checks for the presence of Precise Orbit and Clock information. When present, the Precise Orbits and Clocks are handled at 1530. The input data is tested at 1520 to see if it is from the reference and can be single-differenced. If so, the single-difference data is handled at 1535.
FIG. 17 shows an expanded view of flowchart 1500. When rover data is received, it is used to form a rover position difference solution between the current and previous epoch (1605). The rover position difference estimate is then buffered at step 1610, and optionally used to generate a low-latency position estimate at 1612.
When available, the rigorous predicted satellite clock/orbit models are updated at 1613. The rigorous predicted clock/orbit information is optionally used at 1614 to update the rover position difference for the current data epoch. At 1615, the rigorous predicted orbit information is used to update the time sequence of rover position difference estimates. The best rover position difference time sequence is generated at 1616 based on the predicted precise rover position difference time sequence and existing broadcast rover position difference time sequence. The best rover position difference from 1616 is used to replace the predicted rover position difference time sequence at 1617.
The rigorous satellite clock/orbit models are updated at 1620, as soon as rigorous orbit and clock information is received for one or more satellites. The rigorous clock models enable the rover position difference time sequence derived from broadcast clocks to be optionally refined (1625) and stored. The rigorous orbit and clock information is used to form a precise rover position difference estimate for the current and previous epochs at 1630. At step 1635, the best rover position difference time sequence is produced based on the existing precise position sequence Finally at 1640, the predicted rover position difference time sequence is replaced by the rover position difference time sequence with the smallest error.
When synchronous reference data are received, they are used to compute single-difference delta phase measurements and rover position difference estimates at 1645. The rover position difference time sequence with the smallest uncertainty is generated at step 1650, and used to replace the existing rover position difference time sequence at 1655. A synchronous position result is produced at 1660, using the latest single-difference GNSS measurements. The best (smallest uncertainty) synchronous position solution is derived from the latest synchronous position result, and the single-difference rover position difference time sequence in step 1665. If for example the synchronous position result is float quality, then often the single-difference rover position difference time sequence that was propagated from the last fixed quality solution will be the best (smallest uncertainty). At 1670, all of the single-difference rover position differences up to the reference data time tag are replaced with the new synchronous position solution Finally at step 1675, an optional report of the synchronous position is provided which will be latent with respect to the current time.
Following is a summary of some of the inventive concepts described herein:
[Part A: Predicted Precise] [TNL A-2796]                1. A positioning method, comprising:                    a. obtaining GNSS data derived from signals received at a rover antenna,            b. obtaining at least one of correction data and rigorous satellite data,            c. maintaining a time sequence of at least one rover position and at least one rover position difference with associated time tags,            d. using the time sequence to determine at least one derived rover position,            e. reporting the derived rover position, and            f. maintaining a set of GNSS satellite clock error models, comprising                            i. upon arrival of rover data associated with a new time tag, extending the time sequence, and                ii. upon arrival of rigorous satellite data, updating at least one clock error model.                                                2. The method of 1, wherein maintaining a set of GNSS satellite clock error models further comprises, upon arrival of rigorous satellite orbit and clock data, updating the time sequence.        3. The method of 1 or 2, further comprising using the updated at least one clock error model to update at least one rover position of the time sequence.        4. The method of one of 1-3, wherein the set of satellite clock error models comprises up to one clock error model per satellite.        5. The method of one of 1-4, wherein the correction data comprises at least one of: single-base-station observations [RTK], virtual reference station observations derived from reference stations of a regional network [VRS], synthetic base station observations derived from reference stations of a global network [SBS], synthetic reference station observations derived from reference stations of a global network with regional augmentation [SRS], and state space representations [RTCM SSR].        6. The method of one of 1-5, wherein rigorous satellite data comprises precise orbit and precise clock data per satellite.        7. Apparatus for performing a method according to one of 1-6.        8. A computer program comprising instructions for causing an apparatus to perform a method according to one of 1-6.        9. A computer program product comprising a tangible computer-readable medium embodying instructions for causing an apparatus to perform a method according to one of 1-6.        
[Part B: Mixed Delta—Mixing Quality in One Epoch] [TNL A-2798]                1. A positioning method, comprising                    a. obtaining GNSS data derived from signals received at a rover antenna,            b. obtaining at least one of correction data and rigorous satellite data,            c. maintaining a time sequence of at least one rover position and at least one rover position difference with associated time tags, by estimating at least one position difference using rigorous satellite data from multiple satellites using at least two selected combinations of                            i. for at least one satellite, no correction data and broadcast satellite data,                ii. for at least one satellite, no correction data and rigorous predicted satellite data,                iii. for at least one satellite, no correction data rigorous satellite data for said at least one satellite,                iv. for at least one satellite, correction data and broadcast satellite data,                v. for at least one satellite, rigorous predicted satellite data and correction data,                vi. for at least one satellite, rigorous satellite data and correction data,                                    d. using the time sequence to determine at least one derived rover position, and            e. reporting the derived rover position.                        2. The method of 1, wherein estimating at least one position difference using rigorous satellite data from multiple satellites using at least two selected combinations comprises applying a filter having two clock states per satellite.        3. The method of one of 1-2, wherein the correction data comprises at least one of: single-base-station observations [RTK], virtual reference station observations derived from reference stations of a regional network [VRS], synthetic base station observations derived from reference stations of a global network [SBS], synthetic reference station observations derived from reference stations of a global network with regional augmentation [SRS], and state space representations [RTCM SSR].        4. The method of one of 1-3, wherein rigorous satellite data comprises rigorous orbit data per satellite and rigorous clock data per satellite.        5. Apparatus for performing a method according to one of 1-4.        6. A computer program comprising instructions for causing an apparatus to perform a method according to one of 1-4.        7. A computer program product comprising a tangible computer-readable medium embodying instructions for causing an apparatus to perform a method according to one of 1-4.        
[Part C: Improve/Cleanup the Buffer] [TNL A-3126]                1. A positioning method, comprising                    a. obtaining GNSS data derived from signals received at a rover antenna,            b. obtaining at least one of correction data and rigorous satellite data,            c. maintaining a time sequence of at least one rover position and at least one rover position difference with associated time tags by,                            i. upon arrival of correction data, extending the time sequence with a computed synchronized position, and                ii. upon arrival of one of correction data and rigorous satellite data, modifying at least a portion of the time sequence,                                    d. using the time sequence to determine at least one derived rover position, and            e. reporting the derived rover position.                        
2. The method of 1, wherein the computed synchronized position comprises one of: a real-time kinematic [RTK] position, a position determined using a weighted average of integer ambiguity candidates, a position determined using a differential positioning technique [DGPS], a position determined with the aid of an inertial navigation system, and a technique using GNSS data to determine an absolute position.                3. [Mixing and Replacing] The method of one of 1-2, wherein modifying at least a portion of the time sequence comprises replacing at least one position difference by at least one improved position difference [lower variance].        4. The method of 3, wherein replacing at least one position difference by at least one improved position difference comprises replacing at least one position difference determined using broadcast satellite data with at least one position difference determined using rigorous predicted satellite data.        5. The method of one of 3-4, wherein replacing at least one position difference by at least one improved position difference comprises blending at least one position difference determined using broadcast satellite data with at least one position difference determined using rigorous predicted satellite data.        6. The method of one of 3-5, wherein replacing at least one position difference by at least one improved position difference comprises replacing at least one position difference determined using rigorous predicted satellite data with at least one position difference determined using rigorous satellite data.        7. The method of one of 3-6, wherein replacing at least one position difference by at least one improved position difference comprises blending at least one position difference determined using rigorous predicted satellite data with at least one position difference determined using rigorous satellite data.        8. The method of one of 3-7, wherein replacing at least one position difference by at least one improved position difference comprises replacing at least one position difference determined using rigorous satellite data with at least one position difference determined using corrected single-differenced data.        9. The method of one of 3-8, wherein replacing at least one position difference by at least one improved position difference comprises blending at least one position difference determined using rigorous satellite data with at least one position difference determined using corrected single-differenced data.        10. The method of one of 3-9, wherein replacing at least one position difference by at least one improved position difference comprises replacing at least one position difference determined using corrected single-differenced data with at least one position difference determined using corrections synchronous with rover data.        11. The method of one of 3-10, wherein replacing at least one position difference by at least one improved position difference comprises blending at least one position difference determined using corrected single-differenced data with at least one position difference determined using corrections synchronous with rover data.        12. The method of one of 1-11, wherein maintaining a time sequence further comprises, upon arrival of rigorous satellite data, replacing at least one position difference by at least one improved position difference.        13. [Replacing] The method of one of 1-12, wherein modifying at least a portion of the time sequence comprises replacing a portion of the time sequence with an improved portion of the time sequence.        14. The method of 13, wherein the improved portion of the time sequence has an estimated precision which is better than an estimated precision of a portion of the time sequence which it replaces.        15. The method of one of 13-14, wherein the improved portion of the time sequence has a number of entries which is fewer than a number of entries of a portion of the time sequence which it replaces.        16. The method of one of 13-15, wherein the improved portion of the time sequence is determined by, starting from a position determined using corrections synchronous with rover data as an anchor position at a time tag, deriving a new anchor position for the time tag from the anchor position and at least one other previously estimated position at the time tag.        17. [selecting] The method of 16, wherein deriving a new anchor position for the time tag comprises selecting between the anchor position and the at least one other previously estimated position at the time tag based on comparison of an estimated precision of the anchor position with an estimated precision of the at least one other previously estimated position at the time tag.        18. The method of 17, wherein at least one estimated precision is determined from a covariance matrix.        19. The method of one of 17-18, wherein the new anchor position for the time tag is selected based on smallest estimated three-dimensional precision.        20. The method of one of 17-18, wherein the new anchor position for the time tag is selected based on smallest estimated horizontal precision.        21. The method of one of 17-18, wherein the new anchor position for the time tag is selected based on smallest vertical precision.        22. [blending] The method of 16, wherein deriving a new anchor position for the time tag comprises blending the anchor position with the at least one other previously estimated position at the time tag.        23. The method of 22, wherein blending comprises forming a weighted mean of the anchor position and at least one other previously estimated position at the time tag.        24. Apparatus for performing a method according to one of 1-23.        25. A computer program comprising instructions for causing an apparatus to perform a method according to one of 1-23.        26. A computer program product comprising a tangible computer-readable medium embodying instructions for causing an apparatus to perform a method according to one of 1-23.        
[Part D: Jump Reduction] [TNL A-2638]                1. A positioning method, comprising                    a. obtaining for each epoch of a set of at least one epoch a respective synchronous position to be propagated to an anchor epoch,            b. for each epoch of the set, combining the respective synchronous position with at least one rover position difference defining a change of rover position from the epoch of the respective synchronous position to the anchor epoch, to obtain a respective propagated position for the anchor epoch,            c. obtaining a synchronous position for the anchor epoch,            d. blending at least one propagated position for the anchor epoch with the synchronous position for the anchor epoch to obtain a blended anchor position for the anchor epoch,            e. determining a propagated rover position for a current epoch by combining the blended anchor position with at least one rover position difference defining a change of rover position from the anchor epoch to the current epoch.                        2. The method of 1, wherein the blending comprises blending a selected number of propagated positions for the anchor epoch with the synchronous position for the anchor epoch.        3. The method of one of 1-2, wherein the blending is based on at least one weighting factor.        4. The method of one of 1-3, wherein at least one weighting factor is based on age of a synchronous position used to obtain a propagated position which is blended to obtain the blended anchor position for the anchor epoch.        5. The method of 4, wherein at least one weighting factor declines linearly with age of a synchronous position used to obtain a propagated position which is blended to obtain the blended anchor position for the anchor epoch.        6. The method of 4, wherein at least one weighting factor declines exponentially with age of a synchronous position used to obtain a propagated position which is blended to obtain the blended anchor position for the anchor epoch.        7. The method of one of 1-3, wherein at least one weighting factor is based on an estimated precision of a propagated position which is blended to obtain the blended anchor position for the anchor epoch.        8. The method of 8, wherein at least one weighting factor is based on an estimated precision of the synchronous position for the anchor epoch.        9. The method of one of 1-3, wherein the blending is proportional to respective estimated precisions of the at least one propagated position for the anchor epoch and of the synchronous position for the anchor epoch.        10. Apparatus for performing a method according to one of 1-9.        11. A computer program comprising instructions for causing an apparatus to perform a method according to one of 1-9.        12. A computer program product comprising a tangible computer-readable medium embodying instructions for causing an apparatus to perform a method according to one of 1-9.        
[Part E: Selecting/Blending] [TNL A-2797]                1. A positioning method, comprising                    a. obtaining GNSS data derived from signals received at a rover antenna,            b. obtaining correction data,            c. maintaining a time sequence of at least one rover position and at least one rover position difference with associated time tags,            d. using the time sequence to determine at least one derived rover position by, starting from a position determined using corrections synchronous with rover data as an anchor position at a time tag, deriving a new anchor position for the time tag of the anchor position and at least one other estimated rover position at the time tag of the anchor position, and            e. at least one of                            i. reporting the new anchor position at the time tag as the rover position at a time associated with the time tag of the anchor position, and                ii. combining the new anchor position at the time tag of the anchor position with at least one rover position difference to determine a new derived rover position for a subsequent time tag, and reporting the new derived rover position as the rover position at a time associated with the subsequent time tag.                                                2. [selecting] The method of 1, wherein deriving a new anchor position for the time tag comprises selecting between the anchor position and the at least one other previously estimated position at the time tag based on comparison of an estimated precision of the anchor position with an estimated precision of the at least one other previously estimated position at the time tag.        3. The method of 2, wherein at least one estimated precision is determined from a covariance matrix.        4. The method of one of 1-3, wherein the new anchor position for the time tag is selected based on smallest estimated three-dimensional precision.        5. The method of one of 1-3, wherein the new anchor position for the time tag is selected based on smallest estimated horizontal precision.        6. The method of one of 1-3, wherein the new anchor position for the time tag is selected based on smallest vertical precision.        7. [blending] The method of 1, wherein deriving a new anchor position for the time tag comprises blending the anchor position with the at least one other previously estimated position at the time tag.        8. The method of 7, wherein blending comprises forming a weighted mean of the anchor position and at least one other previously estimated position at the time tag.        9. Apparatus for performing a method according to one of 1-8.        10. A computer program comprising instructions for causing an apparatus to perform a method according to one of 1-8.        11. A computer program product comprising a tangible computer-readable medium embodying instructions for causing an apparatus to perform a method according to one of 1-8.        
[Part F: Correcting Delta-Phase for Incorrect Starting Position] [TNL A-2705]                1. A positioning method, comprising                    a. obtaining an approximate rover anchor position for a first epoch,            b. using the approximate rover anchor position to determine a rover position difference for at least one succeeding epoch,            c. obtaining an improved rover anchor position for the first epoch,            d. deriving an adjusted rover position difference for each said succeeding epoch, and            e. deriving a rover position for a current epoch from the improved rover anchor position for the first epoch and at least one adjusted rover position difference.                        2. The method of 1, wherein the approximate rover anchor position contains an initial error, wherein the rover position difference for each said succeeding epoch contains a respective partial error based on the initial error, and wherein deriving an adjusted rover position difference for each said succeeding epoch comprises correcting each rover position difference for the respective partial error.        3. Apparatus for performing a method according to one of 1-2.        4. A computer program comprising instructions for causing an apparatus to perform a method according to one of 1-2.        5. A computer program product comprising a tangible computer-readable medium embodying instructions for causing an apparatus to perform a method according to one of 1-2.        
The foregoing description of embodiments is not intended as limiting the scope of but rather to provide examples of the invention as defined by the claims. Those of ordinary skill in the art will realize that the detailed description of embodiments of the present invention is illustrative only and is not intended to be in any way limiting. Other embodiments of the present invention will readily suggest themselves to such skilled persons having the benefit of this disclosure.
In the interest of clarity, not all of the routine features of the implementations described herein are shown and described. It will be appreciated that in the development of any such actual implementation, numerous implementation-specific decisions must be made to achieve the developer's specific goals, such as compliance with application- and business-related constraints, and that these specific goals will vary from one implementation to another and from one developer to another. Moreover, it will be appreciated that such a development effort might be complex and time-consuming, but would nevertheless be a routine undertaking of engineering for those of ordinary skill in the art having the benefit of this disclosure.
In accordance with embodiments of the present invention, the components, process steps and/or data structures may be implemented using various types of operating systems (OS), computer platforms, firmware, computer programs, computer languages and/or general-purpose machines. Portions of the methods can be run as a programmed process running on processing circuitry. The processing circuitry can take the form of numerous combinations of processors and operating systems, or a stand-alone device. The processes can be implemented as instructions executed by such hardware, by hardware alone, or by any combination thereof. The software may be stored on a program storage device readable by a machine. Computational elements, such as filters and banks of filters, can be readily implemented using an object-oriented programming language such that each required filter is instantiated as needed.
Those of skill in the art will recognize that devices of a less general-purpose nature, such as hardwired devices, field programmable logic devices (FPLD5), including field programmable gate arrays (FPGAs) and complex programmable logic devices (CPLDs), application specific integrated circuits (ASICs), or the like, may also be used without departing from the scope and spirit of the inventive concepts disclosed herein.
In accordance with an embodiment of the present invention, the methods may be implemented in part on a data processing computer such as a personal computer, workstation computer, mainframe computer, or high-performance server running an operating system such as a version of Microsoft Windows, or various versons of the Unix operating system such as Linux available from a number of vendors. The methods may also be implemented on a multiple-processor system, or in a computing environment including various peripherals such as input devices, output devices, displays, pointing devices, memories, storage devices, media interfaces for transferring data to and from the processor(s), and the like. Such a computer system or computing environment may be networked locally, or over the Internet.
Any of the above-described methods and their embodiments may be implemented in part by means of a computer program. The computer program may be loaded on an apparatus as described above. Therefore, the invention also relates to a computer program, which, when carried out on an apparatus performs portions of any one of the above above-described methods and their embodiments.
The invention also relates to a computer-readable medium or a computer-program product including the above-mentioned computer program. The computer-readable medium or computer-program product may for instance be a magnetic tape, an optical memory disk, a magnetic disk, a magneto-optical disk, a CD ROM, a DVD, a CD, a flash memory unit or the like, wherein the computer program is permanently or temporarily stored. The invention also relates to a computer-readable medium (or to a computer-program product) having computer-executable instructions for carrying out any one of the methods of the invention.
The invention also relates to a firmware update adapted to be installed on apparatus already in the field, i.e. a computer program which is delivered to the field as a computer program product. This applies to each of the above-described methods and apparatuses.
Although the present invention has been described on the basis of detailed examples, the detailed examples only serve to provide the skilled person with a better understanding, and are not intended to limit the scope of the invention. The scope of the invention is much rather defined by the appended claims.